//
//  LoadingCache.h
//  ENTBoostKit
//
//  Created by zhong zf on 14-7-1.
//
//

@class EBEnterpriseInfo;
@class EBGroupInfo;
@class EBMemberInfo;
@class EBEmotionInner;
@class EBContactInfo;

///加载数据缓存
@interface EBLoadingData : NSObject


///调用标识
@property(nonatomic) uint32_t cid;
///创建时间
@property(strong, nonatomic)NSDate* createdTime;
///数据更新时间
@property(strong, nonatomic)NSDate* updatedTime;

///-----加载企业组织架构(包括资源)-------
///企业数
@property(atomic) int32_t entCount;
///企业部门数量
@property(atomic) int32_t entDepCount;
///个人群组数量
@property(atomic) int32_t myDepCount;

//表情与头像资源数量
@property(atomic) int32_t emoCount;

//联系人数量
@property(atomic) int32_t contactCount;

///企业信息
@property(strong, nonatomic) EBEnterpriseInfo* enterpriseInfo;


- (id)initWithCid:(uint32_t)cid;

/**记录部门或群组中人员数量
 * @param count 数量
 * @param depCode 部门或群组代码
 */
- (void)addEmpCountOfGroup:(int32_t)count forGroup:(uint64_t)depCode;

/**读取部门或群组成员数量
 * 仅表示当前查询返回的数量，不一定等于该部门或群组的总成员数量
 * @param depCode 部门或群组代码
 */
- (int32_t)empCountOfGroup:(uint64_t)depCode;

/**记入部门信息
 * @param groupInfo 部门信息
 */
- (void)addEntGroupInfo:(EBGroupInfo*)groupInfo;

/**获取部门信息
 * @param groupInfo 部门信息
 */
- (EBGroupInfo*)entGroupInfo:(uint64_t)depCode;

///获取全部企业部门信息
- (NSDictionary*)entGroupInfos;

/**记入个人群组信息
 * @param groupInfo 群组信息
 */
- (void)addGroupInfo:(EBGroupInfo*)groupInfo;

/**获取个人群组信息
 * @param groupInfo 群组信息
 */
- (EBGroupInfo*)groupInfo:(uint64_t)depCode;

///获取全部个人群组信息
- (NSDictionary*)groupInfos;

/**记录成员信息
 * @param memberInfo 成员信息
 */
- (void)addMemberInfo:(EBMemberInfo*)memberInfo;

//获取部门或群组中成员信息
- (NSArray*)memberInfos:(uint64_t)depCode;

///**获取成员信息
// * @param empCode 成员编号
// */
//- (EBMemberInfo*)memberInfo:(uint64_t)empCode;

///获取所有成员信息
-(NSDictionary*)memberInfos;

////补全企业组织架构信息
//- (void)complementOrganizationalStructure;

/////没有成员的部门或群组数量
//- (int32_t)countOfZeroMemberGroup;

///是否可以触发加载企业自身信息完成的事件,如果一旦返回一次YES，再次调用将一直返回NO(避免多次触发事件)
- (BOOL)isCanFireLoadEnterpriseInfosFinishedEvent;

///是否可以触发加载企业部门完成的事件,如果一旦返回一次YES，再次调用将一直返回NO(避免多次触发事件)
- (BOOL)isCanFireLoadAllEntGroupsFinishedEvent;

///是否可以触发加载个人群组完成的事件,如果一旦返回一次YES，再次调用将一直返回NO(避免多次触发事件)
- (BOOL)isCanFireLoadAllPersonalGroupsFinishedEvent;

///是否可以触发加载部门或群组内成员完成的事件,如果一旦返回一次YES，再次调用将一直返回NO(避免多次触发事件)
- (BOOL)isCanFireLoadAllMembersFinishedEvent;

///记入表情或头像资源描述信息
- (void)addEmotion:(EBEmotionInner*)emotion;

///获取表情或头像资源描述信息列表{key="cmAddress", value="nsMutableArray"}
- (NSDictionary*)emotions;

///已接收到表情或头像资源描述信息的数量
- (int32_t)countOfReceivedEmotion;

///是否可以触发加载表情资源完成的事件,如果一旦返回一次TRUE，再次调用将一直返回FALSE(避免多次触发事件)
- (BOOL)isCanFireLoadEmotionFinisedEvent;

///记录联系人信息
- (void)addContactInfo:(EBContactInfo*)contactInfo;

///获取所有联系人信息
- (NSDictionary*)contactInfos;

///是否可以触发加载联系人完成的事件,如果一旦返回一次TRUE，再次调用将一直返回FALSE(避免多次触发事件)
- (BOOL)isCanFireLoadContactInfoFinisedEvent;

@end
